package quarto.view.client;

import quarto.model.Piece;

/**
 * Structuur van een client user interface
 * @knows
 * - De Client
 * @does
 * - Client aanmaken die een verbinding maakt met de Server
 * - Representatie van het spel weergeven
 * - Geeft aan Client door welke handelingen de Player verricht
 * @author Frank Borgonjen & Tim Smit
 */
public interface ClientUI
{
    /**
     * Voegt een statusbericht toe
     * @param msg het bericht dat toegevoegd moet worden
     */
    public void addMessage(String msg);

    /**
     * Geeft een foutmelding weer
     * @param foutmelding
     */
    public void errorMessage(String error);
    
    /**
     * Vraag de locatie op voor een bepaald stuk
     * @param  piece het stuk dat geplaatst moet worden
     * @return de locatie die de gebruiker gekozen heeft
     */
    public int getLocationForPiece(Piece piece);
    
    /**
     * Vraagt een nieuw stuk aan de gebruiker en geeft deze terug
     * @return het stuk wat de gebruiker gekozen heeft
     */
    public Piece getNewPiece();
    
    /**
     * Geeft het bord weer
     */
    public void showBoard();
    
    /**
     * Vraagt of de gebruiker opnieuw wilt verbinden met de server
     */
    public void askForReconnect();
}
